﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace SCOSub
{
    static class SpellForecast
    {
        private static string[] One = { "A", "I", "U", "E", "O", "N" };
        private static string[] Two = { "KA", "KI", "KU", "KE", "KO", "SA", "SU", "SE", "SO", "TA", "TE", "TO", "NA", "NI", "NU", "NE", "NO", "HA", "HI", "HU", "HE", "HO", "MA", "MI", "MU", "ME", "MO", "YA", "YI", "YU", "YE", "YO", "RA", "RI", "RU", "RE", "RO", "WA", "WI", "WU", "WE", "WO", "GA", "GI", "GU", "GE", "GO", "ZA", "ZI", "ZU", "ZE", "ZO", "DA", "JI", "ZU", "DE", "DO", "BA", "BI", "BU", "BE", "BO", "PA", "PI", "PU", "PE", "PO", "JA", "JU", "JO", "SI", "TU", "FU" };
        private static string[] Three = { "SHI", "CHI", "TSU", "KYA", "KYU", "KYO", "SHA", "SYA", "SHU", "SYU", "SHO", "SYO", "CHA", "TYA", "CHU", "TYU", "CHO", "TYO", "NYA", "NYU", "NYO", "HYA", "HYU", "HYO", "MYA", "MYU", "MYO", "RYA", "RYU", "RYO", "GYA", "GYU", "GYO", "JYA", "JYU", "JYO", "BYA", "BYU", "BYO", "PYA", "PYU", "PYO", "TTO", "TTE", "TTA" };

        public static int Forecast(RichTextBox target)
        {
           /* int posnow = target.SelectionStart;
            int length = target.Text.Length;

            if (length - posnow == 0)
                return 1;
            string sub1;
            while ((sub1 = target.Text.Substring(target.SelectionStart, 1)) == " ")
            {
                target.SelectionStart++;
            }
            */
            return Doit(target);

        }
        private static int Doit(RichTextBox target)
        {
            int posnow = target.SelectionStart;
            int length = target.Text.Length;
            string text = target.Text;

            if (length - posnow <= 1)
                return 1;
            string sub1 = text.Substring(posnow, 1);
            if (sub1 == "\n")
                return 1;
            string sub2 = text.Substring(posnow, 2);
            if (sub2.IndexOf("\n") != -1)
                return 1;
            bool found = false;
            foreach (string s in Two)
            {
                if (s == sub2.ToUpper())
                {
                    found = true;
                    break;
                }
            }
            if (found)
                return 2;
            if (length - posnow >= 3)
            {
                string sub3 = text.Substring(posnow, 3);
                foreach (string s in Three)
                {
                    if (s == sub3.ToUpper())
                    {
                        found = true;
                        break;
                    }
                }
                if (found)
                    return 3;
                else
                {
                    foreach (string s in One)
                    {
                        if (sub1.ToUpper() == s)
                        {
                            found = true;
                            break;
                        }
                    }
                    if (found)
                        return 1;
                    return 4;
                   /* else
                    {
                        int posspace = text.IndexOf(" ", posnow);
                        if (posspace == -1)
                            return 4;
                        return (int)Math.Min(posspace - posnow, 4);
                    }*/
                }
                //return 1;
            }
            else return 1;
        }
        
    }
}
